<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <meta http-equiv="Content-Type"
 content="text/html; charset=iso-8859-1">
  <meta name="Author" content="Cristian Bogdan">
  <title>Makumba Developer Documentation</title>
  <link rel="stylesheet" type="text/css" media="all" href="../main.css">
  <script type="text/javascript" src="../main.js"></script>
</head>
<body>
<script type="text/javascript">
   makeNavBar("../");
</script>
<h1>Makumba Developer Documentation</h1>
This is the startup for a new documentation for the <i>makumba
developer</i> (= makumba-internals programmer, as opposed to makumba
programmer or makumba user, which are ppl who just use makumba to write
their web applications). <br>
<br>
Makumba is developed at sourceforge. See our <a href="SF-howto.html">howto</a>.<br>
An&nbsp; Eclipse environment exists for Makumba. See <a
 href="eclipse-howto.html">howto</a>,<br>
<br>
Makumba is written in <a
 href="http://java.sun.com/j2se/1.4.1/docs/api/overview-summary.html">Java</a>.
No need to read all that javadoc. Makumba makes use mostly of the<b>
java.lang
</b>:)<b>, java.util</b>, <b>java.sql</b> (<a
 href="http://java.sun.com/products/jdbc">JDBC</a>), <b>javax.servlet</b>
(<a href="http://java.sun.com/products/servlet">Java Servlet </a>API,
its
javadoc can be found e.g. <a
 href="http://java.sun.com/products/servlet/2.3/javadoc/">here</a>),&nbsp;
<b>javax.servlet.jsp </b>(<a href="http://java.sun.com/products/jsp">Java
Server Pages</a> API, javadoc together with servlet) and <b>java.text</b>
packages.<br>
<br>
<h2>Major makumba components</h2>
(with links to <a href="javadoc">generated javadocs</a>)<br>
<ul>
  <li>The <b>build environment </b>is an <a
 href="http://ant.apache.org">Ant</a> script. One single file (<b><a
 href="http://cvs.makumba.org/build.xml">build.xml</a></b>)
but still has <a
 href="http://bugs.best.eu.org/buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;product=Makumba&amp;component=building-environment&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;status_whiteboard_type=allwordssubstr&amp;status_whiteboard=&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;cmdtype=doit&amp;newqueryname=&amp;order=Reuse+same+sort+as+last+time&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=">problems</a>
:). Execute <b>ant -projecthelp</b> to see what it can do</li>
  <li>The <a href="../api/org/makumba/package-summary.html">API</a>,
exported
to ordinary makumba programmers. Lots of stuff will happen in other
parts
of makumba, while <a
 href="http://bugs.best.eu.org/buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;product=Makumba&amp;component=API&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;status_whiteboard_type=allwordssubstr&amp;status_whiteboard=&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;cmdtype=doit&amp;newqueryname=&amp;order=Reuse+same+sort+as+last+time&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=">little</a>
should change here. Few classes actually do things in this package,
among
them <b><a href="../api/org/makumba/MakumbaSystem.html">MakumbaSystem</a>.
    </b>Rest are just interfaces, that is,&nbsp; facades
to the rest of the library, exceptions, etc. As a rule, makumba parts
described
below should use the API to communicate between them, not use classes
from
the other packages directly. <br>
  </li>
  <li>Handler families. Makumba has all sorts of handlers that achieve
different
goals (from managing SQL tables to generating HTML content) and need to
treat
each field type (int, char, date, text, etc) differently. See a <a
 href="handler_families.txt">chat</a> about this. Handler families
derive
from <b><a href="javadoc/org/makumba/abstr/RecordHandler.html">org.makumba.abstr.RecordHandler</a></b>
and <b><a href="javadoc/org/makumba/abstr/FieldHandler.html">org.makumba.abstr.FieldHandler</a></b>.
See <a href="javadoc/org/makumba/abstr/printer/RecordPrinter.html">org.makumba.abstr.printer.RecordPrinter</a>
for an example. Handler families
can be referred by their package name and their suffix, e.g. <b><a
 href="javadoc/org/makumba/abstr/package-summary.html">org.makumba.abstr.printer.*Printer</a></b>,
where * stands for {Record, Field, int, intEnum, char, date,
text,....},.
Handler families can be regarded as more complicated classes (a handler
family
X inherits from another one Y if it's RecordX extends RecordY). Maybe
it would
be good for future makumba developers to actually <a
 href="http://bugs.best.eu.org/show_bug.cgi?id=111">transform them into
classes</a>
since browsing around families of classes can be difficult at first.</li>
  <li>The MDD parser, is the <b><a
 href="javadoc/org/makumba/abstr/package-summary.html">org.makumba.abstr.*Parser</a></b>
handler family.
Very rudimentary, an <a href="http://www.antlr.org/">ANTLR</a>-based
parser
(like the OQL one) could be used. See <a
 href="http://bugs.best.eu.org/buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;product=Makumba&amp;component=Model-MDD&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;status_whiteboard_type=allwordssubstr&amp;status_whiteboard=&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;cmdtype=doit&amp;newqueryname=&amp;order=Reuse+same+sort+as+last+time&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=">other
things to do</a> about it</li>
  <li>The OQL parser, <b><a
 href="javadoc/org/makumba/db/sql/oql/package-summary.html">org.makumba.db.sql.oql</a></b>,
    <a href="http://www.antlr.org/">ANTLR</a>-based. The grammar is in
the file <b><a
 href="http://cvs.makumba.org/classes/org/makumba/db/sql/oql/OQL-translator.g">OQL-translator.g</a></b>.
There is <a
 href="http://bugs.best.eu.org/buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;product=Makumba&amp;component=OQL&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;status_whiteboard_type=allwordssubstr&amp;status_whiteboard=&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;cmdtype=doit&amp;newqueryname=&amp;order=Reuse+same+sort+as+last+time&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=">quite
challenging stuff to do</a> about it if you like to make compilers.</li>
  <li><b><a href="javadoc/org/makumba/db/sql/package-summary.html">org.makumba.db.sql</a></b>
contains &nbsp;the concrete SQL implementation
of the makumba database layer (<a
 href="http://bugs.best.eu.org/buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;product=Makumba&amp;component=DB&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;status_whiteboard_type=allwordssubstr&amp;status_whiteboard=&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;cmdtype=doit&amp;newqueryname=&amp;order=Reuse+same+sort+as+last+time&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=">stuff
to do</a>). To hack on this package, you will probably need to know how
    <a
 href="http://java.sun.com/j2se/1.4.1/docs/api/java/sql/package-summary.html">JDBC</a>
(Java Database Connectivity) works. Whenever you make a change here,
you can
test it by executing <b>ant test</b>
    <ul>
      <li><b><a href="javadoc/org/makumba/db/sql/Database.html">org.makumba.db.sql.Database</a></b>
contains DB configuration code
(reading from MakumbaDatabase.properties,
localhost_mysql_dbname.properties
etc)<br>
      </li>
      <li><b><a href="javadoc/org/makumba/db/sql/package-summary.html">org.makumba.db.sql.*Manager</a></b>
is the handler family described
in the <a href="/handler_families.txt">chat</a> , dealing with SQL
table
management: see if the table in the DB is conform to the MDD and if not
create
or alter it, do inserts, deletes, updates, etc.</li>
      <li>all table operations are done through <b><a
 href="javadoc/org/makumba/db/sql/SQLDBConnection.html">org.makumba.db.sql.SQLDBConnection</a></b><br>
      </li>
      <li>Besides the handler family, the package contains <b><a
 href="http://cvs.makumba.org/classes/org/makumba/db/sql/sqlEngines.properties">sqlEngines.properties</a></b>,
with stuff specific for each sql driver, and subpackages such as <b><a
 href="javadoc/org/makumba/db/sql/odbcjet/package-summary.html">odbcjet</a>,
        <a href="javadoc/org/makumba/db/sql/pgsql/package-summary.html">pgsql</a>,
        <a
 href="javadoc/org/makumba/db/sql/firstsql/package-summary.html">firstsql</a></b>,
etc, containing SQL stuff specific to each of these SQL
engines. A SQL-92 standard compliant SQL engine
will not need a separate package, maybe just additions to
sqlEngines.properties.
(MySQL is a very close approximate, so the <a
 href="javadoc/org/makumba/db/sql/mysql/package-summary.html">mysql
package</a> is very small, but still has <a
 href="http://bugs.best.eu.org/buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;product=Makumba&amp;component=DB-driver-MySQL&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;status_whiteboard_type=allwordssubstr&amp;status_whiteboard=&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;cmdtype=doit&amp;newqueryname=&amp;order=Reuse+same+sort+as+last+time&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=">some
problems</a>).
There is a description of <a href="../SQL-drivers.html#new">how to
build
makumba drivers for other SQL engines</a></li>
      <li><b><a href="javadoc/org/makumba/db/sql/Query.html">org.makumba.db.sql.Query</a></b>
is the query caller. It uses <b><a
 href="javadoc/org/makumba/db/sql/ParameterAssigner.html">org.makumba.db.sql.ParameterAssigner</a></b>
to transform parameters from OQL <b>$x</b> to SQL <b>?</b> in the
right
order, and to set them to the JDBC <a
 href="http://java.sun.com/j2se/1.4.1/docs/api/java/sql/PreparedStatement.html">PreparedStatement</a>.
To transform parameter data from Makumba to SQL, the<b> *Manager</b>
handler
family is used (as that one does it anyway for things like inserts and
updates).
To transform the query results from SQL to Makumba format, also the <b>*Manager
        </b>family is used by <b>Query</b></li>
      <li><b><a href="javadoc/org/makumba/db/sql/SQLUpdate.html">org.makumba.db.sql.SQLUpdate</a></b>
does similar stuff with Query
to send UPDATE ... WHERE and DELETE ... WHERE to the database (uses <b>ParameterAssigner</b>
to set PreparedStatement parameters, etc).</li>
    </ul>
  </li>
  <li><b><a href="javadoc/org/makumba/db/package-summary.html">org.makumba.db</a></b>
contains some abstract stuff about databases,
mostly SQL-independent. It should probably be <a
 href="http://bugs.best.eu.org/show_bug.cgi?id=169">joined</a> with <b><a
 href="javadoc/org/makumba/db/sql/package-summary.html">org.makumba.db.sql</a></b>.
&nbsp;The <b>org.makumba.db.*Handler</b> handler family is the parent
of <b>org.makumba.db.sql.*Manager</b>. <b>org.makumba.db.Database </b>represents
a generic database, <b>org.makumba.db.Table </b>represents a generic
table. <b><a href="javadoc/org/makumba/db/DBConnection.html">org.makumba.db.DBConnection</a></b>
represents
a connection to the database,
and implements functionalty exported by <a
 href="../api/org/makumba/Database.html">org.makumba.Database</a><b> </b>,
    <b><a href="javadoc/org/makumba/db/DBConnectionWrapper.html">org.makumba.db.DBConnectionWrapper</a></b>
is an DBConnection that
can be given to other classes without risking that those apps will
destroy
makumba internal structure</li>
  <li><b><a
 href="javadoc/org/makumba/view/jsptaglib/package-summary.html">org.makumba.view.jsptaglib</a></b>
is the JSP tag library. To see
which <b>mak:</b> tag is implemented by which class, look in <b>servlet-context/makumba.tld</b>.
Tag libraries are specified in the <a
 href="http://jakarta.apache.org/tomcat/tomcat-4.1-doc/servletapi/index.html">JSP
1.2 and Servlet 2.3</a> standard, see especially <b>javax.servlet.jsp.tagext</b><br>
org.makumba.view.jsptaglib has a detailed <a
 href="javadoc/org/makumba/view/jsptaglib/package-summary.html#package_description">description</a>,
please consult that. Each package described here should have such a
documentation. </li>
  <li>the <b><a
 href="javadoc/org/makumba/view/html/package-summary.html">org.makumba.view.html.*Viewer</a></b>
handler family takes
care of displaying different sorts of data in HTML</li>
  <li>makumba forms all inherit from <b><a
 href="javadoc/org/makumba/view/jsptaglib/FormTagBase.html">org.makumba.view.jsptaglib.FormTagBase</a></b>.
    <br>
  </li>
  <li><b><a href="javadoc/org/makumba/view/package-summary.html">org.makumba.view</a></b>
implements some
generic stuff needed for the
taglib.
    <ul>
      <li><b><a href="javadoc/org/makumba/view/ComposedQuery.html">ComposedQuery</a></b>
makes up queries from the
from=,
where= used
in JSP tags. It also knows how to make up bigger queries when a
mak:list is
embedded in another mak:list</li>
      <li><b><a href="javadoc/org/makumba/view/Grouper.html">org.makumba.view.Grouper</a></b>
does the
equivalent of a SQL "left
join". It's fast enough, but <a
 href="http://bugs.best.eu.org/show_bug.cgi?id=56">problematic</a><br>
      </li>
      <li><b>AttributeParametrizer</b> solves a very difficult problem:
not
all $attributes in a mak:list query can be transformed in OQL $x
parameters.
E.g. SELECT blabla ORDER BY $1 is not legal in OQL (or SQL for that
matter)
but mak:list accepts orderBy="$order", so AP detects that $order is not
an
OQL parameter. &nbsp;Threre are <a
 href="http://bugs.best.eu.org/show_bug.cgi?id=221">rumors</a> that
this doesn't
work well</li>
      <li><b>MultipleAttributeParametrizer</b> does a simpler job.
Takes vectorial
$attributes with variable length and, depending on their length,
produces
a new OQL query. for example where="a.country IN SET $countries"
is&nbsp;
translated to OQL as WHERE a.country IN SET ($1, $2, $3) if 3 countries
were
selected</li>
      <li><b>*Formatter </b>is a generic formatter of Makumba data,
not dependent
on HTML<br>
      </li>
    </ul>
  </li>
  <li>The <b><a
 href="javadoc/org/makumba/controller/package-summary.html">org.makumba.controller</a></b>
takes care of invoking business logic when the
user interacts with the system. The controller was spread out in
various places. They were <a
 href="http://bugs.best.eu.org/show_bug.cgi?id=6">moved together</a> in
    <b><i>org.makumba.controller</i></b>, which specializes in specific
areas (<a
 href="javadoc/org/makumba/controller/http/package-summary.html">http</a>,
    <a href="javadoc/org/makumba/controller/html/package-summary.html">html</a>,
    <a href="javadoc/org/makumba/controller/jsp/package-summary.html">jsp</a>).
    <ul>
      <li><b><a href="javadoc/org/makumba/controller/Logic.html">org.makumba.controller.Logic</a></b>
takes care of finding business
logic and invoking it. See <a
 href="http://bugs.best.eu.org/buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;product=Makumba&amp;component=Controller&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;status_whiteboard_type=allwordssubstr&amp;status_whiteboard=&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;cmdtype=doit&amp;newqueryname=&amp;order=Reuse+same+sort+as+last+time&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=">stuff
to do and discuss about business logic</a></li>
      <li>the <b><a
 href="javadoc/org/makumba/controller/http/package-summary.html">org.makumba.controller.http</a></b>
takes care of responding to HTML forms
and asking <b>org.makumba.controller.Logic</b> to invoke business
logic. See <a
 href="http://bugs.best.eu.org/buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;product=Makumba&amp;component=Controller-http&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;status_whiteboard_type=allwordssubstr&amp;status_whiteboard=&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;cmdtype=doit&amp;newqueryname=&amp;order=Reuse+same+sort+as+last+time&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=">stuff
to do</a>
        <ul>
          <li>Each type of form (<b><a
 href="javadoc/org/makumba/view/jsptaglib/NewTag.html">org.makumba.view.jsptaglib.NewTag</a></b>,
            <b><a href="javadoc/org/makumba/view/jsptaglib/EditTag.html">EditTag</a></b>)
defines a <b><a
 href="javadoc/org/makumba/controller/html/FormResponder.html">org.makumba.controller.html.FormResponder</a></b>
and <b><a href="javadoc/org/makumba/controller/http/Responder.html">org.makumba.controller.http.Responder</a></b>
that knows which business logic to invoke</li>
          <li>Each <b><a
 href="javadoc/org/makumba/controller/html/package-summary.html">org.makumba.controller.html.*Editor</a></b>
knows how to format
HTML &lt;input&gt; and &lt;select&gt; tags for each type of Makumba
data, and
how to read their data from HTTP query strings in form responses</li>
          <li><b><a
 href="javadoc/org/makumba/controller/http/MultipartHttpParameters.html">org.makumba.controller.http.MultipartHttpParameters</a></b>
reads Http parameters from file upload forms<br>
          </li>
        </ul>
      </li>
    </ul>
  </li>
  <li><b><a href="javadoc/org/makumba/util/package-summary.html">org.makumba.util</a></b>
contains generic
makumba implementation stuff,
such as
    <ul>
      <li>caches: <b>NamedResources</b> and <a
 href="http://bugs.best.eu.org/show_bug.cgi?id=188">lately</a> <b>SoftNamedResources</b></li>
      <li><b>LargeData </b>can keep large data in little memory by
swapping
it to disk (used by large <b><a href="javadoc/org/makumba/Text.html">org.makumba.Text</a></b>
as well as mak:lists that
produce large output (in <b><a
 href="javadoc/org/makumba/view/jsptaglib/RootQueryStrategy.html">org.makumba.view.jsptaglib.RootQueryStrategy</a></b>).
        <a href="http://bugs.best.eu.org/show_bug.cgi?id=103">Should</a>
also
be used by MultipartHttpParameters <a
 href="http://bugs.best.eu.org/show_bug.cgi?id=19">and</a> the SQL
table manager</li>
      <li><b>MultipleKey</b> provides vectorial keys for caches, used
by <b><a href="javadoc/org/makumba/view/Grouper.html">org.makumba.view.Grouper</a></b></li>
      <li><b>ResourcePool </b>keeps a pool of identical resources.
Used for <b><a href="javadoc/org/makumba/db/DBConnection.html">org.makumba.db.DBConenction</a></b>s</li>
      <li><b>WrappedException</b> and <b>RuntimeWrappedException </b>are
used
to transform exception types.<br>
      </li>
      <li><b>SyntaxPoint</b> is used by the new jsptaglib during
parsing of JSPs. It is also thought for use by the a new jspx source
viewer.<br>
      </li>
    </ul>
  </li>
  <li><b><a href="javadoc/org/makumba/devel/package-summary.html">org.makumba.devel</a></b>
is the makumba
developer support, such as
MDD, JSP and Java viewers. There are things to <a
 href="http://bugs.best.eu.org/buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;product=Makumba&amp;component=developer-support&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;status_whiteboard_type=allwordssubstr&amp;status_whiteboard=&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;cmdtype=doit&amp;newqueryname=&amp;order=Reuse+same+sort+as+last+time&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=">improve</a>
there.</li>
  <li><b>documentation</b> is in the <b>doc/</b> directory, the <a
 href="http://www.makumba.org">www.makumba.org</a> website. Can be <a
 href="http://bugs.best.eu.org/buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;product=Makumba&amp;component=Doc&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;status_whiteboard_type=allwordssubstr&amp;status_whiteboard=&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;cmdtype=doit&amp;newqueryname=&amp;order=Reuse+same+sort+as+last+time&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=">improved
a lot</a>!</li>
  <li>See also <a
 href="http://bugs.best.eu.org/buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=&amp;product=Makumba&amp;component=general-impl&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;status_whiteboard_type=allwordssubstr&amp;status_whiteboard=&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;emailassigned_to1=1&amp;emailtype1=substring&amp;email1=&amp;emailassigned_to2=1&amp;emailreporter2=1&amp;emailcc2=1&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;changedin=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;cmdtype=doit&amp;newqueryname=&amp;order=Reuse+same+sort+as+last+time&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=">general
problems</a> with the code<br>
  </li>
</ul>
<script type="text/javascript">
   makeFooter("$Id$");
</script>
</body>
</html>
